#ifndef InclusionGuard_SoundPotUtilities_h
#define InclusionGuard_SoundPotUtilities_h

namespace SoundPot
{
	
	/// Defines all valid instrument types
	enum InstrumentType
	{
		Vst,
		UniversalMidi
	};


	struct CurrentPositionInfo
	{
		/** The tempo in BPM */
		double bpm;

		/** Time signature numerator, e.g. the 3 of a 3/4 time sig */
		int timeSigNumerator;
		/** Time signature denominator, e.g. the 4 of a 3/4 time sig */
		int timeSigDenominator;

		/** The current play position, in seconds from the start of the edit. */
		double timeInSeconds;

		/** For timecode, the position of the start of the edit, in seconds from 00:00:00:00. */
		double editOriginTime;

		/** The current play position in pulses-per-quarter-note.

			This is the number of quarter notes since the edit start.
		*/
		double ppqPosition;

		/** The position of the start of the last bar, in pulses-per-quarter-note.

			This is the number of quarter notes from the start of the edit to the
			start of the current bar.

			Note - this value may be unavailable on some hosts, e.g. Pro-Tools. If
			it's not available, the value will be 0.
		*/
		double ppqPositionOfLastBarStart;

		/** Frame rate types */
		enum FrameRateType
		{
			fps24           = 0,
			fps25           = 1,
			fps2997         = 2,
			fps30           = 3,
			fps2997drop     = 4,
			fps30drop       = 5,
			fpsUnknown      = 99
		};

		/** The video frame rate, if applicable. */
		FrameRateType frameRate;

		/** True if the transport is currently playing. */
		bool isPlaying;

		/** True if the transport is currently recording. 
	    
			(When isRecording is true, then isPlaying will also be true).
		*/
		bool isRecording;
	};
}



#endif